\hypertarget{class_four_motor_tank_drive_subsystem}{
\section{FourMotorTankDriveSubsystem Class Reference}
\label{class_four_motor_tank_drive_subsystem}\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
}


{\ttfamily \#include $<$FourMotorTankDriveSubsystem.hpp$>$}

Inheritance diagram for FourMotorTankDriveSubsystem:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=4.000000cm]{class_four_motor_tank_drive_subsystem}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct {\bfseries PidValue}
\end{DoxyCompactItemize}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{MotorPosition} \{ {\bfseries MotorPositionLeftFront} =  RobotDrive::kFrontLeftMotor, 
{\bfseries MotorPositionLeftBack} =  RobotDrive::kRearLeftMotor, 
{\bfseries MotorPositionRightFront} =  RobotDrive::kFrontRightMotor, 
{\bfseries MotorPositionRightBack} =  RobotDrive::kRearRightMotor
 \}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_four_motor_tank_drive_subsystem_ab8e38da4f6ed615014325e6ef482e4de}{FourMotorTankDriveSubsystem} (UINT32 leftFrontMotorChannel, UINT32 leftBackMotorChannel, UINT32 rightFrontMotorChannel, UINT32 rightBackMotorChannel)
\item 
\hyperlink{class_four_motor_tank_drive_subsystem_ac1a45d1ade305b02f0491adad52d378a}{FourMotorTankDriveSubsystem} (CANJaguar $\ast$leftFrontMotor, CANJaguar $\ast$leftBackMotor, CANJaguar $\ast$rightFrontMotor, CANJaguar $\ast$rightBackMotor)
\item 
\hyperlink{class_four_motor_tank_drive_subsystem_a0b4dae51234087ecb847974c1efc10ad}{FourMotorTankDriveSubsystem} (CANJaguar \&leftFrontMotor, CANJaguar \&leftBackMotor, CANJaguar \&rightFrontMotor, CANJaguar \&rightBackMotor)
\item 
\hyperlink{class_four_motor_tank_drive_subsystem_a85d381ffdd5fb56bd155c010fd3ecd6c}{FourMotorTankDriveSubsystem} (SpeedController $\ast$leftFrontMotor, SpeedController $\ast$leftBackMotor, SpeedController $\ast$rightFrontMotor, SpeedController $\ast$rightBackMotor)
\item 
\hyperlink{class_four_motor_tank_drive_subsystem_afbc82b7ff903d1f4db12eed7b48e8399}{FourMotorTankDriveSubsystem} (SpeedController \&leftFrontMotor, SpeedController \&leftBackMotor, SpeedController \&rightFrontMotor, SpeedController \&rightBackMotor)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a10066930c0806d251808cf6e8c0bd919}{DriveByTank} (double leftValue, double rightValue)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a9bfc7b669118cd8c8b6c1323fc6afa0a}{DriveByMagnitudeAndCurve} (double magnitude, double curve)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_aa16cdeb376dca4cff5ee94a2274c271f}{SetControlMode} (\hyperlink{class_drive_subsystem_adbbe91a7fd62cf12702601070d50b6eb}{ControlMode} controlMode)
\item 
\hyperlink{class_drive_subsystem_adbbe91a7fd62cf12702601070d50b6eb}{ControlMode} \hyperlink{class_four_motor_tank_drive_subsystem_abe6a7f2e62644940deebe0bfb7d91f40}{GetControlMode} ()
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_aaf6350734b55af4e5398998f52f9225d}{SetSpeedReference} (\hyperlink{class_drive_subsystem_a8bf21977a6b2911139200f2d2c32871a}{SpeedReference} speedReference)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a974bd137db1e2c751a916f151a2cbc5f}{SetDistanceReference} (\hyperlink{class_drive_subsystem_ad4cb48ca262f5befda36fb53263843d7}{DistanceReference} distanceReference)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_ac28f7c548a857b302c489348714502f5}{SetNeutralMode} (\hyperlink{class_drive_subsystem_ace82b46d96fe6a96f39a564e303de261}{NeutralMode} neutralMode)
\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a28957b204f71e050a89d53a848af0d55}{
bool {\bfseries GetMotorInvertation} (\hyperlink{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{MotorPosition} motorPosition)}
\label{class_four_motor_tank_drive_subsystem_a28957b204f71e050a89d53a848af0d55}

\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_aa244c8094db2bbca8e7320310b6495d4}{SetMotorInvertations} (bool leftFrontIsInverted, bool leftBackIsInverted, bool rightFrontIsInverted, bool rightBackIsInverted)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a485d0c147dd1f1a63f331d00d7b4c481}{SetMotorInvertation} (\hyperlink{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{MotorPosition} motorPosition, bool isInverted)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a07ad4e304243630f67d208524072e55c}{SetEncodersCodesPerRevolution} (UINT16 codesPerRevolution)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a71b5a14d6e319c825a1d56a742c15c13}{SetEncodersCodesPerRevolution} (UINT16 leftFrontCodesPerRevolution, UINT16 leftBackCodesPerRevolution, UINT16 rightFrontCodesPerRevolution, UINT16 rightBackCodesPerRevolution)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a959a6f8db3bdaa6617c5644aa3e3a419}{SetEncoderCodesPerRevolution} (\hyperlink{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{MotorPosition} motorPosition, UINT16 codesPerRevolution)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a104f2bdcf2893c594cf1c235ca8f9c54}{SetPIDs} (\hyperlink{class_drive_subsystem_adbbe91a7fd62cf12702601070d50b6eb}{ControlMode} controlMode, double p, double i, double d)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a66c3e26c0c970fd4ee975d90a73e0db6}{SetPID} (\hyperlink{class_drive_subsystem_adbbe91a7fd62cf12702601070d50b6eb}{ControlMode} controlMode, \hyperlink{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{MotorPosition} motorPosition, double p, double i, double d)
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_a4c60a1f680bb88efbadbfa0988c97d4b}{SetMaximumOutput} (double maximumOutput)
\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a4478229e792d4ed992c67f0e9c940ca6}{
double {\bfseries GetDistanceThreshold} ()}
\label{class_four_motor_tank_drive_subsystem_a4478229e792d4ed992c67f0e9c940ca6}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a25f498f144569841d2188187259a7429}{
void {\bfseries SetDistanceThreshold} (double distanceThreshold)}
\label{class_four_motor_tank_drive_subsystem_a25f498f144569841d2188187259a7429}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_ab23c3eebe03c9aa4ebe504326b913515}{
double {\bfseries GetExpiration} ()}
\label{class_four_motor_tank_drive_subsystem_ab23c3eebe03c9aa4ebe504326b913515}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a3765b5226c6da3106e1857835cb720f2}{
void {\bfseries SetExpiration} (double expiration)}
\label{class_four_motor_tank_drive_subsystem_a3765b5226c6da3106e1857835cb720f2}

\item 
virtual void \hyperlink{class_four_motor_tank_drive_subsystem_aa6e1d4d6887f8ec5c153a524838bf63c}{Stop} ()
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{class_four_motor_tank_drive_subsystem_af3098aeede834b45879a15eaaa39b4a7}{PrintFaults} ()
\item 
virtual void \hyperlink{class_four_motor_tank_drive_subsystem_a8fc199d7888d24df6e692fd1ff585c8c}{HandleEnable} ()
\item 
virtual void \hyperlink{class_four_motor_tank_drive_subsystem_a538c92a19ca2cadf41589a7ce9686ae2}{HandlePeriodic} ()
\item 
virtual void \hyperlink{class_four_motor_tank_drive_subsystem_a46c11946b4373dfdae35efb58ad6ca9a}{HandleDisable} ()
\end{DoxyCompactItemize}
\subsection*{Static Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{class_four_motor_tank_drive_subsystem_ae90838aeb568f6278a2cb10ee7c12799}{
static double {\bfseries GetMotorInvertationMultiplier} (bool isInverted)}
\label{class_four_motor_tank_drive_subsystem_ae90838aeb568f6278a2cb10ee7c12799}

\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{class_four_motor_tank_drive_subsystem_aa6c5bb18af1b4854bccb141976be8e85}{
bool {\bfseries m\_\-driveUpdated}}
\label{class_four_motor_tank_drive_subsystem_aa6c5bb18af1b4854bccb141976be8e85}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a12605dcf166c3649ad32f5247ab16793}{
bool {\bfseries m\_\-reversed}}
\label{class_four_motor_tank_drive_subsystem_a12605dcf166c3649ad32f5247ab16793}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a6d3d0e2f4c2794250dec26bd21d4e5e6}{
bool {\bfseries m\_\-ownsDrive}}
\label{class_four_motor_tank_drive_subsystem_a6d3d0e2f4c2794250dec26bd21d4e5e6}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a8cf7f8b78b448da38eeba042fe1d2677}{
double {\bfseries m\_\-maxOutput}}
\label{class_four_motor_tank_drive_subsystem_a8cf7f8b78b448da38eeba042fe1d2677}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_aa6def2ecfd8f28cca9673495c358a056}{
bool {\bfseries m\_\-motorInvertationLeftFront}}
\label{class_four_motor_tank_drive_subsystem_aa6def2ecfd8f28cca9673495c358a056}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a3c2eef62b295294bedeebec114c4c62f}{
bool {\bfseries m\_\-motorInvertationLeftBack}}
\label{class_four_motor_tank_drive_subsystem_a3c2eef62b295294bedeebec114c4c62f}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a80876041f8de2171494866cdbcb1503a}{
bool {\bfseries m\_\-motorInvertationRightFront}}
\label{class_four_motor_tank_drive_subsystem_a80876041f8de2171494866cdbcb1503a}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_aa1d50d5bf2b4814e17556b50c3a9a05a}{
bool {\bfseries m\_\-motorInvertationRightBack}}
\label{class_four_motor_tank_drive_subsystem_aa1d50d5bf2b4814e17556b50c3a9a05a}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_ad5c37728455fbecc3a2e4ca27de30d89}{
bool {\bfseries m\_\-usesCanJaguars}}
\label{class_four_motor_tank_drive_subsystem_ad5c37728455fbecc3a2e4ca27de30d89}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a8f72a0fb14d5a9d8095243d60440edc4}{
CANJaguar \& {\bfseries m\_\-cjLeftFront}}
\label{class_four_motor_tank_drive_subsystem_a8f72a0fb14d5a9d8095243d60440edc4}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a5cb62439b1cb3805796209be941303f4}{
CANJaguar \& {\bfseries m\_\-cjLeftBack}}
\label{class_four_motor_tank_drive_subsystem_a5cb62439b1cb3805796209be941303f4}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_ad6ca631b462b394b07e98d48208c456d}{
CANJaguar \& {\bfseries m\_\-cjRightFront}}
\label{class_four_motor_tank_drive_subsystem_ad6ca631b462b394b07e98d48208c456d}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a34be8200b5bee2cc6303c044b3811843}{
CANJaguar \& {\bfseries m\_\-cjRightBack}}
\label{class_four_motor_tank_drive_subsystem_a34be8200b5bee2cc6303c044b3811843}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a692dc0dbaccc6b42f8da65a1fdb425ae}{
\hyperlink{class_drive_subsystem_adbbe91a7fd62cf12702601070d50b6eb}{ControlMode} {\bfseries m\_\-controlMode}}
\label{class_four_motor_tank_drive_subsystem_a692dc0dbaccc6b42f8da65a1fdb425ae}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a61813d58ec8b5724837aeb17fe566fe4}{
int {\bfseries m\_\-counterPeriods}}
\label{class_four_motor_tank_drive_subsystem_a61813d58ec8b5724837aeb17fe566fe4}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a496d1cb038db071a21c48ce1769a3768}{
\hyperlink{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{MotorPosition} {\bfseries m\_\-motorCanidateForCheck}}
\label{class_four_motor_tank_drive_subsystem_a496d1cb038db071a21c48ce1769a3768}

\item 
\hypertarget{class_four_motor_tank_drive_subsystem_a7bc44a6266c60b9726cdae1a0d507de8}{
MotorSafetyHelper $\ast$ {\bfseries m\_\-safetyHelper}}
\label{class_four_motor_tank_drive_subsystem_a7bc44a6266c60b9726cdae1a0d507de8}

\end{DoxyCompactItemize}
\subsection*{Static Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{class_four_motor_tank_drive_subsystem_acce0f2ce57f85aef1834eb35cc53facb}{
static CANJaguar \& {\bfseries s\_\-nullCANJaguar}}
\label{class_four_motor_tank_drive_subsystem_acce0f2ce57f85aef1834eb35cc53facb}

\end{DoxyCompactItemize}
\subsection*{Friends}
\begin{DoxyCompactItemize}
\item 
\hypertarget{class_four_motor_tank_drive_subsystem_afd6dc1464219badacb2dabab8c98eb2a}{
class \hyperlink{class_four_motor_tank_drive_subsystem_afd6dc1464219badacb2dabab8c98eb2a}{MecanumDriveSubsystem}}
\label{class_four_motor_tank_drive_subsystem_afd6dc1464219badacb2dabab8c98eb2a}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
The \hyperlink{class_four_motor_tank_drive_subsystem}{FourMotorTankDriveSubsystem} class is a base class for all four motor drive subsystems. 

\subsection{Member Enumeration Documentation}
\hypertarget{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!MotorPosition@{MotorPosition}}
\index{MotorPosition@{MotorPosition}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{MotorPosition}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf FourMotorTankDriveSubsystem::MotorPosition}}}
\label{class_four_motor_tank_drive_subsystem_ac9a2fa0719bbd7309518b48dbe90614d}
The MotorPosition enum can be used to select drive motors. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{class_four_motor_tank_drive_subsystem_ab8e38da4f6ed615014325e6ef482e4de}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{FourMotorTankDriveSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}FourMotorTankDriveSubsystem::FourMotorTankDriveSubsystem (
\begin{DoxyParamCaption}
\item[{UINT32}]{leftFrontMotorChannel, }
\item[{UINT32}]{leftBackMotorChannel, }
\item[{UINT32}]{rightFrontMotorChannel, }
\item[{UINT32}]{rightBackMotorChannel}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_ab8e38da4f6ed615014325e6ef482e4de}
Constructor for \hyperlink{class_four_motor_tank_drive_subsystem}{FourMotorTankDriveSubsystem}. \hypertarget{class_four_motor_tank_drive_subsystem_ac1a45d1ade305b02f0491adad52d378a}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{FourMotorTankDriveSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}FourMotorTankDriveSubsystem::FourMotorTankDriveSubsystem (
\begin{DoxyParamCaption}
\item[{CANJaguar $\ast$}]{leftFrontMotor, }
\item[{CANJaguar $\ast$}]{leftBackMotor, }
\item[{CANJaguar $\ast$}]{rightFrontMotor, }
\item[{CANJaguar $\ast$}]{rightBackMotor}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_ac1a45d1ade305b02f0491adad52d378a}
Constructor for \hyperlink{class_four_motor_tank_drive_subsystem}{FourMotorTankDriveSubsystem}. \hypertarget{class_four_motor_tank_drive_subsystem_a0b4dae51234087ecb847974c1efc10ad}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{FourMotorTankDriveSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}FourMotorTankDriveSubsystem::FourMotorTankDriveSubsystem (
\begin{DoxyParamCaption}
\item[{CANJaguar \&}]{leftFrontMotor, }
\item[{CANJaguar \&}]{leftBackMotor, }
\item[{CANJaguar \&}]{rightFrontMotor, }
\item[{CANJaguar \&}]{rightBackMotor}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a0b4dae51234087ecb847974c1efc10ad}
Constructor for \hyperlink{class_four_motor_tank_drive_subsystem}{FourMotorTankDriveSubsystem}. \hypertarget{class_four_motor_tank_drive_subsystem_a85d381ffdd5fb56bd155c010fd3ecd6c}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{FourMotorTankDriveSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}FourMotorTankDriveSubsystem::FourMotorTankDriveSubsystem (
\begin{DoxyParamCaption}
\item[{SpeedController $\ast$}]{leftFrontMotor, }
\item[{SpeedController $\ast$}]{leftBackMotor, }
\item[{SpeedController $\ast$}]{rightFrontMotor, }
\item[{SpeedController $\ast$}]{rightBackMotor}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a85d381ffdd5fb56bd155c010fd3ecd6c}
Constructor for \hyperlink{class_four_motor_tank_drive_subsystem}{FourMotorTankDriveSubsystem}. \hypertarget{class_four_motor_tank_drive_subsystem_afbc82b7ff903d1f4db12eed7b48e8399}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{FourMotorTankDriveSubsystem}]{\setlength{\rightskip}{0pt plus 5cm}FourMotorTankDriveSubsystem::FourMotorTankDriveSubsystem (
\begin{DoxyParamCaption}
\item[{SpeedController \&}]{leftFrontMotor, }
\item[{SpeedController \&}]{leftBackMotor, }
\item[{SpeedController \&}]{rightFrontMotor, }
\item[{SpeedController \&}]{rightBackMotor}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_afbc82b7ff903d1f4db12eed7b48e8399}
Constructor for \hyperlink{class_four_motor_tank_drive_subsystem}{FourMotorTankDriveSubsystem}. 

\subsection{Member Function Documentation}
\hypertarget{class_four_motor_tank_drive_subsystem_a9bfc7b669118cd8c8b6c1323fc6afa0a}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!DriveByMagnitudeAndCurve@{DriveByMagnitudeAndCurve}}
\index{DriveByMagnitudeAndCurve@{DriveByMagnitudeAndCurve}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{DriveByMagnitudeAndCurve}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::DriveByMagnitudeAndCurve (
\begin{DoxyParamCaption}
\item[{double}]{magnitude, }
\item[{double}]{curve}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a9bfc7b669118cd8c8b6c1323fc6afa0a}
Drive the specified magnitude and curve amount.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em magnitude} & The magnitude to drive.  curve the amount to curve. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a10066930c0806d251808cf6e8c0bd919}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!DriveByTank@{DriveByTank}}
\index{DriveByTank@{DriveByTank}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{DriveByTank}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::DriveByTank (
\begin{DoxyParamCaption}
\item[{double}]{leftValue, }
\item[{double}]{rightValue}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a10066930c0806d251808cf6e8c0bd919}
Drive the specified amount tank style.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em leftValue} & The amount to drive the left drive motors.  rightValue The amount to drive the right drive motors. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_abe6a7f2e62644940deebe0bfb7d91f40}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!GetControlMode@{GetControlMode}}
\index{GetControlMode@{GetControlMode}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{GetControlMode}]{\setlength{\rightskip}{0pt plus 5cm}{\bf DriveSubsystem::ControlMode} FourMotorTankDriveSubsystem::GetControlMode (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_abe6a7f2e62644940deebe0bfb7d91f40}
Gets the current ControlMode.

Currently only applicable if CANJaguars are used. If CANJaguars aren't being used, ControlModePercentVBus is returned.

This function is untested. \hypertarget{class_four_motor_tank_drive_subsystem_a46c11946b4373dfdae35efb58ad6ca9a}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!HandleDisable@{HandleDisable}}
\index{HandleDisable@{HandleDisable}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{HandleDisable}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::HandleDisable (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{class_four_motor_tank_drive_subsystem_a46c11946b4373dfdae35efb58ad6ca9a}
This function must be overridden to disable this subsystem. It must be safe to call this function when already disabled. 

Implements \hyperlink{class_robot_subsystem_a705b10d18b7cbdc8578d343d7d5fd4a7}{RobotSubsystem}.

\hypertarget{class_four_motor_tank_drive_subsystem_a8fc199d7888d24df6e692fd1ff585c8c}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!HandleEnable@{HandleEnable}}
\index{HandleEnable@{HandleEnable}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{HandleEnable}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::HandleEnable (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{class_four_motor_tank_drive_subsystem_a8fc199d7888d24df6e692fd1ff585c8c}
This function should be overridden to enable the subsystem. It will be called when the robot becomes enabled. 

Reimplemented from \hyperlink{class_robot_subsystem_ae7faad5fdffc7c416801c628094d438c}{RobotSubsystem}.

\hypertarget{class_four_motor_tank_drive_subsystem_a538c92a19ca2cadf41589a7ce9686ae2}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!HandlePeriodic@{HandlePeriodic}}
\index{HandlePeriodic@{HandlePeriodic}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{HandlePeriodic}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::HandlePeriodic (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{class_four_motor_tank_drive_subsystem_a538c92a19ca2cadf41589a7ce9686ae2}
This function should be overridden to handle periodic subsystem tasks. It will be called periodically whenever the robot is enabled. 

Reimplemented from \hyperlink{class_robot_subsystem_a7066b5d072b9ff707aabad9c46fcdc55}{RobotSubsystem}.



Reimplemented in \hyperlink{class_mecanum_drive_subsystem_adf2c3d907fc8271f70dee8eb3be2576f}{MecanumDriveSubsystem}.

\hypertarget{class_four_motor_tank_drive_subsystem_af3098aeede834b45879a15eaaa39b4a7}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!PrintFaults@{PrintFaults}}
\index{PrintFaults@{PrintFaults}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{PrintFaults}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::PrintFaults (
\begin{DoxyParamCaption}
\item[{void}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected\mbox{]}}}}
\label{class_four_motor_tank_drive_subsystem_af3098aeede834b45879a15eaaa39b4a7}
Prints the faults of the CANJaguars.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, functions will be called on null.

This function is untested. \hypertarget{class_four_motor_tank_drive_subsystem_aa16cdeb376dca4cff5ee94a2274c271f}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetControlMode@{SetControlMode}}
\index{SetControlMode@{SetControlMode}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetControlMode}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetControlMode (
\begin{DoxyParamCaption}
\item[{{\bf ControlMode}}]{controlMode}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_aa16cdeb376dca4cff5ee94a2274c271f}
Sets the ControlMode.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.

This function seems to work to the extent that it doesn't crash if used properly.


\begin{DoxyParams}{Parameters}
{\em controlMode} & The ControlMode to switch to. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a974bd137db1e2c751a916f151a2cbc5f}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetDistanceReference@{SetDistanceReference}}
\index{SetDistanceReference@{SetDistanceReference}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetDistanceReference}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetDistanceReference (
\begin{DoxyParamCaption}
\item[{{\bf DistanceReference}}]{distanceReference}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a974bd137db1e2c751a916f151a2cbc5f}
Sets the DistanceReference.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.

This function seems to work to the extent that it doesn't crash if used properly.


\begin{DoxyParams}{Parameters}
{\em distanceReference} & The DistanceReference to switch to. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a959a6f8db3bdaa6617c5644aa3e3a419}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetEncoderCodesPerRevolution@{SetEncoderCodesPerRevolution}}
\index{SetEncoderCodesPerRevolution@{SetEncoderCodesPerRevolution}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetEncoderCodesPerRevolution}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetEncoderCodesPerRevolution (
\begin{DoxyParamCaption}
\item[{{\bf MotorPosition}}]{motorPosition, }
\item[{UINT16}]{codesPerRevolution}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a959a6f8db3bdaa6617c5644aa3e3a419}
Sets the encoder codes per revolution on the specified motor.

This function seems to work.


\begin{DoxyParams}{Parameters}
{\em motorPosition} & The specified MotorPosition of the motor. \\
\hline
{\em codesPerRevolution} & The specified encoder codes per revolution of the specified motor. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a71b5a14d6e319c825a1d56a742c15c13}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetEncodersCodesPerRevolution@{SetEncodersCodesPerRevolution}}
\index{SetEncodersCodesPerRevolution@{SetEncodersCodesPerRevolution}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetEncodersCodesPerRevolution}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetEncodersCodesPerRevolution (
\begin{DoxyParamCaption}
\item[{UINT16}]{leftFrontCodesPerRevolution, }
\item[{UINT16}]{leftBackCodesPerRevolution, }
\item[{UINT16}]{rightFrontCodesPerRevolution, }
\item[{UINT16}]{rightBackCodesPerRevolution}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a71b5a14d6e319c825a1d56a742c15c13}
Sets the encoder codes per revolution on each of the motors.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em leftFrontCodesPerRevolution} & The specified encoder codes per revolution of the left front motor. \\
\hline
{\em leftBackCodesPerRevolution} & The specified encoder codes per revolution of the left back motor. \\
\hline
{\em rightFrontCodesPerRevolution} & The specified encoder codes per revolution of the right front motor. \\
\hline
{\em rightBackCodesPerRevolution} & The specified encoder codes per revolution of the right back motor. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a07ad4e304243630f67d208524072e55c}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetEncodersCodesPerRevolution@{SetEncodersCodesPerRevolution}}
\index{SetEncodersCodesPerRevolution@{SetEncodersCodesPerRevolution}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetEncodersCodesPerRevolution}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetEncodersCodesPerRevolution (
\begin{DoxyParamCaption}
\item[{UINT16}]{codePerRevolution}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a07ad4e304243630f67d208524072e55c}
Sets the encoder codes per revolution.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em codePerRevolution} & The specified encoder codes per revolution of all of the drive motors. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a4c60a1f680bb88efbadbfa0988c97d4b}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetMaximumOutput@{SetMaximumOutput}}
\index{SetMaximumOutput@{SetMaximumOutput}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetMaximumOutput}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetMaximumOutput (
\begin{DoxyParamCaption}
\item[{double}]{maximumOutput}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a4c60a1f680bb88efbadbfa0988c97d4b}
Sets the maximum output of the drive system.

This function seems to work.


\begin{DoxyParams}{Parameters}
{\em maximumOutput} & The desired maximum output. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a485d0c147dd1f1a63f331d00d7b4c481}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetMotorInvertation@{SetMotorInvertation}}
\index{SetMotorInvertation@{SetMotorInvertation}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetMotorInvertation}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetMotorInvertation (
\begin{DoxyParamCaption}
\item[{{\bf MotorPosition}}]{motorPosition, }
\item[{bool}]{isInverted}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a485d0c147dd1f1a63f331d00d7b4c481}
Sets the motor invertation of the motor at the specified MotorPosition.

This function seems to work.


\begin{DoxyParams}{Parameters}
{\em motorPosition} & The specified MotorPosition of the motor to be inverted or uninverted. \\
\hline
{\em isInverted} & The desired invertation of the specified motor. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_aa244c8094db2bbca8e7320310b6495d4}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetMotorInvertations@{SetMotorInvertations}}
\index{SetMotorInvertations@{SetMotorInvertations}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetMotorInvertations}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetMotorInvertations (
\begin{DoxyParamCaption}
\item[{bool}]{leftFrontIsInverted, }
\item[{bool}]{leftBackIsInverted, }
\item[{bool}]{rightFrontIsInverted, }
\item[{bool}]{rightBackIsInverted}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_aa244c8094db2bbca8e7320310b6495d4}
Sets the motor invertations.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em leftFrontIsInverted} & The desired invertation of the left front motor. \\
\hline
{\em leftBackIsInverted} & The desired invertation of the left back motor. \\
\hline
{\em rightFrontIsInverted} & The desired invertation of the right front motor. \\
\hline
{\em rightBackIsInverted} & The desired invertation of the right back motor. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_ac28f7c548a857b302c489348714502f5}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetNeutralMode@{SetNeutralMode}}
\index{SetNeutralMode@{SetNeutralMode}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetNeutralMode}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetNeutralMode (
\begin{DoxyParamCaption}
\item[{{\bf NeutralMode}}]{neutralMode}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_ac28f7c548a857b302c489348714502f5}
Sets the NeutralMode.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em neutralMode} & The NeutralMode to switch to. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a66c3e26c0c970fd4ee975d90a73e0db6}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetPID@{SetPID}}
\index{SetPID@{SetPID}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetPID}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetPID (
\begin{DoxyParamCaption}
\item[{{\bf ControlMode}}]{controlMode, }
\item[{{\bf MotorPosition}}]{motorPosition, }
\item[{double}]{p, }
\item[{double}]{i, }
\item[{double}]{d}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a66c3e26c0c970fd4ee975d90a73e0db6}
Sets the PID values of the specified drive motor when in speed control mode.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.

This function seems to work.


\begin{DoxyParams}{Parameters}
{\em motorPosition} & The specified MotorPosition. \\
\hline
{\em p} & The desired Proportional gain. \\
\hline
{\em i} & The desired Intregral gain. \\
\hline
{\em d} & The desired Differential gain. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_a104f2bdcf2893c594cf1c235ca8f9c54}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetPIDs@{SetPIDs}}
\index{SetPIDs@{SetPIDs}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetPIDs}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetPIDs (
\begin{DoxyParamCaption}
\item[{{\bf ControlMode}}]{controlMode, }
\item[{double}]{p, }
\item[{double}]{i, }
\item[{double}]{d}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_a104f2bdcf2893c594cf1c235ca8f9c54}
Sets the PID values of each of the motors when in speed control mode.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.

This function is untested.


\begin{DoxyParams}{Parameters}
{\em p} & The desired Proportional gain. \\
\hline
{\em i} & The desired Intregral gain. \\
\hline
{\em d} & The desired Differential gain. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_aaf6350734b55af4e5398998f52f9225d}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!SetSpeedReference@{SetSpeedReference}}
\index{SetSpeedReference@{SetSpeedReference}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{SetSpeedReference}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::SetSpeedReference (
\begin{DoxyParamCaption}
\item[{{\bf SpeedReference}}]{speedReference}
\end{DoxyParamCaption}
)}}
\label{class_four_motor_tank_drive_subsystem_aaf6350734b55af4e5398998f52f9225d}
Sets the SpeedReference.

Currently only works if CANJaguars are used. If CANJaguars aren't being used, an exception will be thrown.

This function seems to work to the extent that it doesn't crash if used properly.


\begin{DoxyParams}{Parameters}
{\em speedReference} & The SpeedReference to switch to. \\
\hline
\end{DoxyParams}
\hypertarget{class_four_motor_tank_drive_subsystem_aa6e1d4d6887f8ec5c153a524838bf63c}{
\index{FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}!Stop@{Stop}}
\index{Stop@{Stop}!FourMotorTankDriveSubsystem@{FourMotorTankDriveSubsystem}}
\subsubsection[{Stop}]{\setlength{\rightskip}{0pt plus 5cm}void FourMotorTankDriveSubsystem::Stop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{class_four_motor_tank_drive_subsystem_aa6e1d4d6887f8ec5c153a524838bf63c}
Stops the drive system.

This function is untested. 

Reimplemented in \hyperlink{class_mecanum_drive_subsystem_a027be58738bb491c51eee57ecf34d371}{MecanumDriveSubsystem}.



The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
C:/Documents and Settings/Sam/My Documents/My Projects/Entech-\/Fpk/Entech-\/Fpk/FourMotorTankDriveSubsystem.hpp\item 
C:/Documents and Settings/Sam/My Documents/My Projects/Entech-\/Fpk/Entech-\/Fpk/FourMotorTankDriveSubsystem.cpp\end{DoxyCompactItemize}
